<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span id="local-6989586621680937034"><span id="local-6989586621680937035"></span></span><span class="hs-pragma">{-# LANGUAGE BangPatterns #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE LambdaCase #-}</span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><span id="line-4"></span><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><span id="line-5"></span><span class="hs-pragma">{-# LANGUAGE MultiParamTypeClasses #-}</span><span>
</span><span id="line-6"></span><span class="hs-pragma">{-# LANGUAGE UndecidableInstances #-}</span><span>
</span><span id="line-7"></span><span>
</span><span id="line-8"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Cmm.Expr</span><span>
</span><span id="line-9"></span><span>    </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier">CmmExpr</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier">cmmExprType</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmExprWidth"><span class="hs-identifier">cmmExprWidth</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmExprAlignment"><span class="hs-identifier">cmmExprAlignment</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#maybeInvertCmmExpr"><span class="hs-identifier">maybeInvertCmmExpr</span></a></span><span>
</span><span id="line-10"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier">CmmReg</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmRegType"><span class="hs-identifier">cmmRegType</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmRegWidth"><span class="hs-identifier">cmmRegWidth</span></a></span><span>
</span><span id="line-11"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier">CmmLit</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmLitType"><span class="hs-identifier">cmmLitType</span></a></span><span>
</span><span id="line-12"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier">LocalReg</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#localRegType"><span class="hs-identifier">localRegType</span></a></span><span>
</span><span id="line-13"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier">GlobalReg</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier">isArgReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#globalRegType"><span class="hs-identifier">globalRegType</span></a></span><span>
</span><span id="line-14"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#spReg"><span class="hs-identifier">spReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#hpReg"><span class="hs-identifier">hpReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#spLimReg"><span class="hs-identifier">spLimReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#hpLimReg"><span class="hs-identifier">hpLimReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#nodeReg"><span class="hs-identifier">nodeReg</span></a></span><span>
</span><span id="line-15"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#currentTSOReg"><span class="hs-identifier">currentTSOReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#currentNurseryReg"><span class="hs-identifier">currentNurseryReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#hpAllocReg"><span class="hs-identifier">hpAllocReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#cccsReg"><span class="hs-identifier">cccsReg</span></a></span><span>
</span><span id="line-16"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#node"><span class="hs-identifier">node</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#baseReg"><span class="hs-identifier">baseReg</span></a></span><span>
</span><span id="line-17"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#VGcPtr"><span class="hs-identifier">VGcPtr</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-18"></span><span>
</span><span id="line-19"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#DefinerOfRegs"><span class="hs-identifier">DefinerOfRegs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier">UserOfRegs</span></a></span><span>
</span><span id="line-20"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsDefd"><span class="hs-identifier">foldRegsDefd</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier">foldRegsUsed</span></a></span><span>
</span><span id="line-21"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldLocalRegsDefd"><span class="hs-identifier">foldLocalRegsDefd</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldLocalRegsUsed"><span class="hs-identifier">foldLocalRegsUsed</span></a></span><span>
</span><span id="line-22"></span><span>
</span><span id="line-23"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier">RegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalRegSet"><span class="hs-identifier">LocalRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalRegSet"><span class="hs-identifier">GlobalRegSet</span></a></span><span>
</span><span id="line-24"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#emptyRegSet"><span class="hs-identifier">emptyRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#elemRegSet"><span class="hs-identifier">elemRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#extendRegSet"><span class="hs-identifier">extendRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#deleteFromRegSet"><span class="hs-identifier">deleteFromRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#mkRegSet"><span class="hs-identifier">mkRegSet</span></a></span><span>
</span><span id="line-25"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#plusRegSet"><span class="hs-identifier">plusRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#minusRegSet"><span class="hs-identifier">minusRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#timesRegSet"><span class="hs-identifier">timesRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#sizeRegSet"><span class="hs-identifier">sizeRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#nullRegSet"><span class="hs-identifier">nullRegSet</span></a></span><span>
</span><span id="line-26"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#regSetToList"><span class="hs-identifier">regSetToList</span></a></span><span>
</span><span id="line-27"></span><span>
</span><span id="line-28"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#Area"><span class="hs-identifier">Area</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-29"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">module</span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html"><span class="hs-identifier">GHC.Cmm.MachOp</span></a></span><span>
</span><span id="line-30"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">module</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html"><span class="hs-identifier">GHC.Cmm.Type</span></a></span><span>
</span><span id="line-31"></span><span>    </span><span class="hs-special">)</span><span>
</span><span id="line-32"></span><span class="hs-keyword">where</span><span>
</span><span id="line-33"></span><span>
</span><span id="line-34"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-35"></span><span>
</span><span id="line-36"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#"><span class="hs-identifier">GHC.Platform</span></a></span><span>
</span><span id="line-37"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.BlockId.html"><span class="hs-identifier">GHC.Cmm.BlockId</span></a></span><span>
</span><span id="line-38"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html"><span class="hs-identifier">GHC.Cmm.CLabel</span></a></span><span>
</span><span id="line-39"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html"><span class="hs-identifier">GHC.Cmm.MachOp</span></a></span><span>
</span><span id="line-40"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html"><span class="hs-identifier">GHC.Cmm.Type</span></a></span><span>
</span><span id="line-41"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html"><span class="hs-identifier">GHC.Driver.Session</span></a></span><span>
</span><span id="line-42"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier">panic</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-43"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html"><span class="hs-identifier">GHC.Types.Unique</span></a></span><span>
</span><span id="line-44"></span><span>
</span><span id="line-45"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../containers/src/Data.Set.html#"><span class="hs-identifier">Data.Set</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../containers/src/Data.Set.Internal.html#Set"><span class="hs-identifier">Set</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-46"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../containers/src/Data.Set.html#"><span class="hs-identifier">Data.Set</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Set</span></span><span>
</span><span id="line-47"></span><span>
</span><span id="line-48"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html"><span class="hs-identifier">GHC.Types.Basic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Basic.html#Alignment"><span class="hs-identifier">Alignment</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#mkAlignment"><span class="hs-identifier">mkAlignment</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#alignmentOf"><span class="hs-identifier">alignmentOf</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-49"></span><span>
</span><span id="line-50"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-51"></span><span class="hs-comment">--              CmmExpr</span><span>
</span><span id="line-52"></span><span class="hs-comment">-- An expression.  Expressions have no side effects.</span><span>
</span><span id="line-53"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-54"></span><span>
</span><span id="line-55"></span><span class="hs-keyword">data</span><span> </span><span id="CmmExpr"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-var">CmmExpr</span></a></span></span><span>
</span><span id="line-56"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="CmmLit"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>               </span><span class="hs-comment">-- Literal</span><span>
</span><span id="line-57"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmLoad"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>   </span><span class="hs-comment">-- Read memory location</span><span>
</span><span id="line-58"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmReg"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span>              </span><span class="hs-comment">-- Contents of register</span><span>
</span><span id="line-59"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmMachOp"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span></span><span> </span><span class="annot"><a href="GHC.Cmm.MachOp.html#MachOp"><span class="hs-identifier hs-type">MachOp</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span class="hs-special">]</span><span>  </span><span class="hs-comment">-- Machine operation (+, -, *, etc.)</span><span>
</span><span id="line-60"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmStackSlot"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-var">CmmStackSlot</span></a></span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#Area"><span class="hs-identifier hs-type">Area</span></a></span><span> </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-61"></span><span>                                </span><span class="hs-comment">-- addressing expression of a stack slot</span><span>
</span><span id="line-62"></span><span>                                </span><span class="hs-comment">-- See Note [CmmStackSlot aliasing]</span><span>
</span><span id="line-63"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmRegOff"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-var">CmmRegOff</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-64"></span><span>        </span><span class="hs-comment">-- CmmRegOff reg i</span><span>
</span><span id="line-65"></span><span>        </span><span class="hs-comment">--        ** is shorthand only, meaning **</span><span>
</span><span id="line-66"></span><span>        </span><span class="hs-comment">-- CmmMachOp (MO_Add rep) [x, CmmLit (CmmInt (fromIntegral i) rep)]</span><span>
</span><span id="line-67"></span><span>        </span><span class="hs-comment">--      where rep = typeWidth (cmmRegType reg)</span><span>
</span><span id="line-68"></span><span>
</span><span id="line-69"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680936974"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>       </span><span class="hs-comment">-- Equality ignores the types</span><span>
</span><span id="line-70"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span id="local-6989586621680936960"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621680936960"><span class="hs-identifier hs-var">l1</span></a></span></span><span>          </span><span id="local-6989586621680936959"><span class="annot"><span class="annottext">== :: CmmExpr -&gt; CmmExpr -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span id="local-6989586621680936958"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621680936958"><span class="hs-identifier hs-var">l2</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621680936960"><span class="hs-identifier hs-var">l1</span></a></span><span class="annot"><span class="annottext">CmmLit -&gt; CmmLit -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621680936958"><span class="hs-identifier hs-var">l2</span></a></span><span>
</span><span id="line-71"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-type">CmmLoad</span></a></span><span> </span><span id="local-6989586621680936957"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936957"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span>       </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-type">CmmLoad</span></a></span><span> </span><span id="local-6989586621680936956"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936956"><span class="hs-identifier hs-var">e2</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936957"><span class="hs-identifier hs-var">e1</span></a></span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmExpr -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936956"><span class="hs-identifier hs-var">e2</span></a></span><span>
</span><span id="line-72"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621680936955"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936955"><span class="hs-identifier hs-var">r1</span></a></span></span><span>          </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621680936954"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936954"><span class="hs-identifier hs-var">r2</span></a></span></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936955"><span class="hs-identifier hs-var">r1</span></a></span><span class="annot"><span class="annottext">CmmReg -&gt; CmmReg -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936954"><span class="hs-identifier hs-var">r2</span></a></span><span>
</span><span id="line-73"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621680936953"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936953"><span class="hs-identifier hs-var">r1</span></a></span></span><span> </span><span id="local-6989586621680936952"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936952"><span class="hs-identifier hs-var">i1</span></a></span></span><span>    </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621680936951"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936951"><span class="hs-identifier hs-var">r2</span></a></span></span><span> </span><span id="local-6989586621680936950"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936950"><span class="hs-identifier hs-var">i2</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936953"><span class="hs-identifier hs-var">r1</span></a></span><span class="annot"><span class="annottext">CmmReg -&gt; CmmReg -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936951"><span class="hs-identifier hs-var">r2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936952"><span class="hs-identifier hs-var">i1</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936950"><span class="hs-identifier hs-var">i2</span></a></span><span>
</span><span id="line-74"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span id="local-6989586621680936948"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936948"><span class="hs-identifier hs-var">op1</span></a></span></span><span> </span><span id="local-6989586621680936947"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936947"><span class="hs-identifier hs-var">es1</span></a></span></span><span>  </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span id="local-6989586621680936946"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936946"><span class="hs-identifier hs-var">op2</span></a></span></span><span> </span><span id="local-6989586621680936945"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936945"><span class="hs-identifier hs-var">es2</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936948"><span class="hs-identifier hs-var">op1</span></a></span><span class="annot"><span class="annottext">MachOp -&gt; MachOp -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936946"><span class="hs-identifier hs-var">op2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936947"><span class="hs-identifier hs-var">es1</span></a></span><span class="annot"><span class="annottext">[CmmExpr] -&gt; [CmmExpr] -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936945"><span class="hs-identifier hs-var">es2</span></a></span><span>
</span><span id="line-75"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-type">CmmStackSlot</span></a></span><span> </span><span id="local-6989586621680936944"><span class="annot"><span class="annottext">Area
</span><a href="#local-6989586621680936944"><span class="hs-identifier hs-var">a1</span></a></span></span><span> </span><span id="local-6989586621680936943"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936943"><span class="hs-identifier hs-var">i1</span></a></span></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-type">CmmStackSlot</span></a></span><span> </span><span id="local-6989586621680936942"><span class="annot"><span class="annottext">Area
</span><a href="#local-6989586621680936942"><span class="hs-identifier hs-var">a2</span></a></span></span><span> </span><span id="local-6989586621680936941"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936941"><span class="hs-identifier hs-var">i2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Area
</span><a href="#local-6989586621680936944"><span class="hs-identifier hs-var">a1</span></a></span><span class="annot"><span class="annottext">Area -&gt; Area -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Area
</span><a href="#local-6989586621680936942"><span class="hs-identifier hs-var">a2</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936943"><span class="hs-identifier hs-var">i1</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936941"><span class="hs-identifier hs-var">i2</span></a></span><span>
</span><span id="line-76"></span><span>  </span><span id="local-6989586621680936940"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936940"><span class="hs-identifier hs-var">_e1</span></a></span></span><span>                </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span id="local-6989586621680936939"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936939"><span class="hs-identifier hs-var">_e2</span></a></span></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-77"></span><span>
</span><span id="line-78"></span><span class="hs-keyword">data</span><span> </span><span id="CmmReg"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span></span><span>
</span><span id="line-79"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="CmmLocal"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-var">CmmLocal</span></a></span></span><span>  </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span>
</span><span id="line-80"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmGlobal"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span>
</span><span id="line-81"></span><span>  </span><span class="hs-keyword">deriving</span><span class="hs-special">(</span><span> </span><span id="local-6989586621680936931"><span id="local-6989586621680936935"><span class="annot"><span class="annottext">CmmReg -&gt; CmmReg -&gt; Bool
(CmmReg -&gt; CmmReg -&gt; Bool)
-&gt; (CmmReg -&gt; CmmReg -&gt; Bool) -&gt; Eq CmmReg
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: CmmReg -&gt; CmmReg -&gt; Bool
$c/= :: CmmReg -&gt; CmmReg -&gt; Bool
== :: CmmReg -&gt; CmmReg -&gt; Bool
$c== :: CmmReg -&gt; CmmReg -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680936908"><span id="local-6989586621680936910"><span id="local-6989586621680936913"><span id="local-6989586621680936916"><span id="local-6989586621680936919"><span id="local-6989586621680936923"><span id="local-6989586621680936927"><span class="annot"><span class="annottext">Eq CmmReg
Eq CmmReg
-&gt; (CmmReg -&gt; CmmReg -&gt; Ordering)
-&gt; (CmmReg -&gt; CmmReg -&gt; Bool)
-&gt; (CmmReg -&gt; CmmReg -&gt; Bool)
-&gt; (CmmReg -&gt; CmmReg -&gt; Bool)
-&gt; (CmmReg -&gt; CmmReg -&gt; Bool)
-&gt; (CmmReg -&gt; CmmReg -&gt; CmmReg)
-&gt; (CmmReg -&gt; CmmReg -&gt; CmmReg)
-&gt; Ord CmmReg
CmmReg -&gt; CmmReg -&gt; Bool
CmmReg -&gt; CmmReg -&gt; Ordering
CmmReg -&gt; CmmReg -&gt; CmmReg
forall a.
Eq a
-&gt; (a -&gt; a -&gt; Ordering)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; a)
-&gt; (a -&gt; a -&gt; a)
-&gt; Ord a
min :: CmmReg -&gt; CmmReg -&gt; CmmReg
$cmin :: CmmReg -&gt; CmmReg -&gt; CmmReg
max :: CmmReg -&gt; CmmReg -&gt; CmmReg
$cmax :: CmmReg -&gt; CmmReg -&gt; CmmReg
&gt;= :: CmmReg -&gt; CmmReg -&gt; Bool
$c&gt;= :: CmmReg -&gt; CmmReg -&gt; Bool
&gt; :: CmmReg -&gt; CmmReg -&gt; Bool
$c&gt; :: CmmReg -&gt; CmmReg -&gt; Bool
&lt;= :: CmmReg -&gt; CmmReg -&gt; Bool
$c&lt;= :: CmmReg -&gt; CmmReg -&gt; Bool
&lt; :: CmmReg -&gt; CmmReg -&gt; Bool
$c&lt; :: CmmReg -&gt; CmmReg -&gt; Bool
compare :: CmmReg -&gt; CmmReg -&gt; Ordering
$ccompare :: CmmReg -&gt; CmmReg -&gt; Ordering
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-82"></span><span>
</span><span id="line-83"></span><span class="hs-comment">-- | A stack area is either the stack slot where a variable is spilled</span><span>
</span><span id="line-84"></span><span class="hs-comment">-- or the stack space where function arguments and results are passed.</span><span>
</span><span id="line-85"></span><span class="hs-keyword">data</span><span> </span><span id="Area"><span class="annot"><a href="GHC.Cmm.Expr.html#Area"><span class="hs-identifier hs-var">Area</span></a></span></span><span>
</span><span id="line-86"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="Old"><span class="annot"><a href="GHC.Cmm.Expr.html#Old"><span class="hs-identifier hs-var">Old</span></a></span></span><span>            </span><span class="hs-comment">-- See Note [Old Area]</span><span>
</span><span id="line-87"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="Young"><span class="annot"><a href="GHC.Cmm.Expr.html#Young"><span class="hs-identifier hs-var">Young</span></a></span></span><span> </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>  </span><span class="hs-comment">-- Invariant: must be a continuation BlockId</span><span>
</span><span id="line-88"></span><span>                   </span><span class="hs-comment">-- See Note [Continuation BlockId] in GHC.Cmm.Node.</span><span>
</span><span id="line-89"></span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680936899"><span id="local-6989586621680936903"><span class="annot"><span class="annottext">Area -&gt; Area -&gt; Bool
(Area -&gt; Area -&gt; Bool) -&gt; (Area -&gt; Area -&gt; Bool) -&gt; Eq Area
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: Area -&gt; Area -&gt; Bool
$c/= :: Area -&gt; Area -&gt; Bool
== :: Area -&gt; Area -&gt; Bool
$c== :: Area -&gt; Area -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680936877"><span id="local-6989586621680936879"><span id="local-6989586621680936882"><span id="local-6989586621680936885"><span id="local-6989586621680936888"><span id="local-6989586621680936891"><span id="local-6989586621680936895"><span class="annot"><span class="annottext">Eq Area
Eq Area
-&gt; (Area -&gt; Area -&gt; Ordering)
-&gt; (Area -&gt; Area -&gt; Bool)
-&gt; (Area -&gt; Area -&gt; Bool)
-&gt; (Area -&gt; Area -&gt; Bool)
-&gt; (Area -&gt; Area -&gt; Bool)
-&gt; (Area -&gt; Area -&gt; Area)
-&gt; (Area -&gt; Area -&gt; Area)
-&gt; Ord Area
Area -&gt; Area -&gt; Bool
Area -&gt; Area -&gt; Ordering
Area -&gt; Area -&gt; Area
forall a.
Eq a
-&gt; (a -&gt; a -&gt; Ordering)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; a)
-&gt; (a -&gt; a -&gt; a)
-&gt; Ord a
min :: Area -&gt; Area -&gt; Area
$cmin :: Area -&gt; Area -&gt; Area
max :: Area -&gt; Area -&gt; Area
$cmax :: Area -&gt; Area -&gt; Area
&gt;= :: Area -&gt; Area -&gt; Bool
$c&gt;= :: Area -&gt; Area -&gt; Bool
&gt; :: Area -&gt; Area -&gt; Bool
$c&gt; :: Area -&gt; Area -&gt; Bool
&lt;= :: Area -&gt; Area -&gt; Bool
$c&lt;= :: Area -&gt; Area -&gt; Bool
&lt; :: Area -&gt; Area -&gt; Bool
$c&lt; :: Area -&gt; Area -&gt; Bool
compare :: Area -&gt; Area -&gt; Ordering
$ccompare :: Area -&gt; Area -&gt; Ordering
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span class="hs-special">)</span><span>
</span><span id="line-90"></span><span>
</span><span id="line-91"></span><span class="hs-comment">{- Note [Old Area]
~~~~~~~~~~~~~~~~~~
There is a single call area 'Old', allocated at the extreme old
end of the stack frame (ie just younger than the return address)
which holds:
  * incoming (overflow) parameters,
  * outgoing (overflow) parameter to tail calls,
  * outgoing (overflow) result values
  * the update frame (if any)

Its size is the max of all these requirements.  On entry, the stack
pointer will point to the youngest incoming parameter, which is not
necessarily at the young end of the Old area.

End of note -}</span><span>
</span><span id="line-106"></span><span>
</span><span id="line-107"></span><span>
</span><span id="line-108"></span><span class="hs-comment">{- Note [CmmStackSlot aliasing]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When do two CmmStackSlots alias?

 - T[old+N] aliases with U[young(L)+M] for all T, U, L, N and M
 - T[old+N] aliases with U[old+M] only if the areas actually overlap

Or more informally, different Areas may overlap with each other.

An alternative semantics, that we previously had, was that different
Areas do not overlap.  The problem that lead to redefining the
semantics of stack areas is described below.

e.g. if we had

    x = Sp[old + 8]
    y = Sp[old + 16]

    Sp[young(L) + 8]  = L
    Sp[young(L) + 16] = y
    Sp[young(L) + 24] = x
    call f() returns to L

if areas semantically do not overlap, then we might optimise this to

    Sp[young(L) + 8]  = L
    Sp[young(L) + 16] = Sp[old + 8]
    Sp[young(L) + 24] = Sp[old + 16]
    call f() returns to L

and now young(L) cannot be allocated at the same place as old, and we
are doomed to use more stack.

  - old+8  conflicts with young(L)+8
  - old+16 conflicts with young(L)+16 and young(L)+8

so young(L)+8 == old+24 and we get

    Sp[-8]  = L
    Sp[-16] = Sp[8]
    Sp[-24] = Sp[0]
    Sp -= 24
    call f() returns to L

However, if areas are defined to be &quot;possibly overlapping&quot; in the
semantics, then we cannot commute any loads/stores of old with
young(L), and we will be able to re-use both old+8 and old+16 for
young(L).

    x = Sp[8]
    y = Sp[0]

    Sp[8] = L
    Sp[0] = y
    Sp[-8] = x
    Sp = Sp - 8
    call f() returns to L

Now, the assignments of y go away,

    x = Sp[8]
    Sp[8] = L
    Sp[-8] = x
    Sp = Sp - 8
    call f() returns to L
-}</span><span>
</span><span id="line-174"></span><span>
</span><span id="line-175"></span><span class="hs-keyword">data</span><span> </span><span id="CmmLit"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span></span><span>
</span><span id="line-176"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="CmmInt"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Integer</span></span><span>  </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span>
</span><span id="line-177"></span><span>        </span><span class="hs-comment">-- Interpretation: the 2's complement representation of the value</span><span>
</span><span id="line-178"></span><span>        </span><span class="hs-comment">-- is truncated to the specified size.  This is easier than trying</span><span>
</span><span id="line-179"></span><span>        </span><span class="hs-comment">-- to keep the value within range, because we don't know whether</span><span>
</span><span id="line-180"></span><span>        </span><span class="hs-comment">-- it will be used as a signed or unsigned value (the CmmType doesn't</span><span>
</span><span id="line-181"></span><span>        </span><span class="hs-comment">-- distinguish between signed &amp; unsigned).</span><span>
</span><span id="line-182"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmFloat"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmFloat"><span class="hs-identifier hs-var">CmmFloat</span></a></span></span><span>  </span><span class="annot"><a href="../../base/src/GHC.Real.html#Rational"><span class="hs-identifier hs-type">Rational</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span>
</span><span id="line-183"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmVec"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmVec"><span class="hs-identifier hs-var">CmmVec</span></a></span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span>                     </span><span class="hs-comment">-- Vector literal</span><span>
</span><span id="line-184"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmLabel"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-var">CmmLabel</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span>                  </span><span class="hs-comment">-- Address of label</span><span>
</span><span id="line-185"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmLabelOff"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-var">CmmLabelOff</span></a></span></span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>              </span><span class="hs-comment">-- Address of label + byte offset</span><span>
</span><span id="line-186"></span><span>
</span><span id="line-187"></span><span>        </span><span class="hs-comment">-- Due to limitations in the C backend, the following</span><span>
</span><span id="line-188"></span><span>        </span><span class="hs-comment">-- MUST ONLY be used inside the info table indicated by label2</span><span>
</span><span id="line-189"></span><span>        </span><span class="hs-comment">-- (label2 must be the info label), and label1 must be an</span><span>
</span><span id="line-190"></span><span>        </span><span class="hs-comment">-- SRT, a slow entrypoint or a large bitmap (see the Mangler)</span><span>
</span><span id="line-191"></span><span>        </span><span class="hs-comment">-- Don't use it at all unless tablesNextToCode.</span><span>
</span><span id="line-192"></span><span>        </span><span class="hs-comment">-- It is also used inside the NCG during when generating</span><span>
</span><span id="line-193"></span><span>        </span><span class="hs-comment">-- position-independent code.</span><span>
</span><span id="line-194"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmLabelDiffOff"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-var">CmmLabelDiffOff</span></a></span></span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span> </span><span class="hs-comment">-- label1 - label2 + offset</span><span>
</span><span id="line-195"></span><span>        </span><span class="hs-comment">-- In an expression, the width just has the effect of MO_SS_Conv</span><span>
</span><span id="line-196"></span><span>        </span><span class="hs-comment">-- from wordWidth to the desired width.</span><span>
</span><span id="line-197"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-198"></span><span>        </span><span class="hs-comment">-- In a static literal, the supported Widths depend on the</span><span>
</span><span id="line-199"></span><span>        </span><span class="hs-comment">-- architecture: wordWidth is supported on all</span><span>
</span><span id="line-200"></span><span>        </span><span class="hs-comment">-- architectures. Additionally W32 is supported on x86_64 when</span><span>
</span><span id="line-201"></span><span>        </span><span class="hs-comment">-- using the small memory model.</span><span>
</span><span id="line-202"></span><span>
</span><span id="line-203"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmBlock"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmBlock"><span class="hs-identifier hs-var">CmmBlock</span></a></span></span><span> </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Cmm.BlockId.html#BlockId"><span class="hs-identifier hs-type">BlockId</span></a></span><span>     </span><span class="hs-comment">-- Code label</span><span>
</span><span id="line-204"></span><span>        </span><span class="hs-comment">-- Invariant: must be a continuation BlockId</span><span>
</span><span id="line-205"></span><span>        </span><span class="hs-comment">-- See Note [Continuation BlockId] in GHC.Cmm.Node.</span><span>
</span><span id="line-206"></span><span>
</span><span id="line-207"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CmmHighStackMark"><span class="annot"><a href="GHC.Cmm.Expr.html#CmmHighStackMark"><span class="hs-identifier hs-var">CmmHighStackMark</span></a></span></span><span> </span><span class="hs-comment">-- A late-bound constant that stands for the max</span><span>
</span><span id="line-208"></span><span>                     </span><span class="hs-comment">-- #bytes of stack space used during a procedure.</span><span>
</span><span id="line-209"></span><span>                     </span><span class="hs-comment">-- During the stack-layout pass, CmmHighStackMark</span><span>
</span><span id="line-210"></span><span>                     </span><span class="hs-comment">-- is replaced by a CmmInt for the actual number</span><span>
</span><span id="line-211"></span><span>                     </span><span class="hs-comment">-- of bytes used</span><span>
</span><span id="line-212"></span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span id="local-6989586621680936847"><span id="local-6989586621680936867"><span class="annot"><span class="annottext">CmmLit -&gt; CmmLit -&gt; Bool
(CmmLit -&gt; CmmLit -&gt; Bool)
-&gt; (CmmLit -&gt; CmmLit -&gt; Bool) -&gt; Eq CmmLit
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: CmmLit -&gt; CmmLit -&gt; Bool
$c/= :: CmmLit -&gt; CmmLit -&gt; Bool
== :: CmmLit -&gt; CmmLit -&gt; Bool
$c== :: CmmLit -&gt; CmmLit -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span>
</span><span id="line-213"></span><span>
</span><span id="line-214"></span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-type">cmmExprType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-215"></span><span id="cmmExprType"><span class="annot"><span class="annottext">cmmExprType :: Platform -&gt; CmmExpr -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-var hs-var">cmmExprType</span></a></span></span><span> </span><span id="local-6989586621680936846"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936846"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-216"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span id="local-6989586621680936845"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621680936845"><span class="hs-identifier hs-var">lit</span></a></span></span><span class="hs-special">)</span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmLit -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmLitType"><span class="hs-identifier hs-var">cmmLitType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936846"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621680936845"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-217"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-type">CmmLoad</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936844"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621680936844"><span class="hs-identifier hs-var">rep</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621680936844"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-218"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621680936843"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936843"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmRegType"><span class="hs-identifier hs-var">cmmRegType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936846"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936843"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-219"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span id="local-6989586621680936842"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936842"><span class="hs-identifier hs-var">op</span></a></span></span><span> </span><span id="local-6989586621680936841"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936841"><span class="hs-identifier hs-var">args</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; MachOp -&gt; [CmmType] -&gt; CmmType
</span><a href="GHC.Cmm.MachOp.html#machOpResultType"><span class="hs-identifier hs-var">machOpResultType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936846"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936842"><span class="hs-identifier hs-var">op</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CmmExpr -&gt; CmmType) -&gt; [CmmExpr] -&gt; [CmmType]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-var">cmmExprType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936846"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936841"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-220"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621680936839"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936839"><span class="hs-identifier hs-var">reg</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmRegType"><span class="hs-identifier hs-var">cmmRegType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936846"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936839"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-221"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-type">CmmStackSlot</span></a></span><span> </span><span class="annot"><span class="annottext">Area
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936846"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-comment">-- an address</span><span>
</span><span id="line-222"></span><span>   </span><span class="hs-comment">-- Careful though: what is stored at the stack slot may be bigger than</span><span>
</span><span id="line-223"></span><span>   </span><span class="hs-comment">-- an address</span><span>
</span><span id="line-224"></span><span>
</span><span id="line-225"></span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmLitType"><span class="hs-identifier hs-type">cmmLitType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-226"></span><span id="cmmLitType"><span class="annot"><span class="annottext">cmmLitType :: Platform -&gt; CmmLit -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmLitType"><span class="hs-identifier hs-var hs-var">cmmLitType</span></a></span></span><span> </span><span id="local-6989586621680936837"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936837"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-227"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936836"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621680936836"><span class="hs-identifier hs-var">width</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmBits"><span class="hs-identifier hs-var">cmmBits</span></a></span><span>  </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621680936836"><span class="hs-identifier hs-var">width</span></a></span><span>
</span><span id="line-228"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmFloat"><span class="hs-identifier hs-type">CmmFloat</span></a></span><span> </span><span class="annot"><span class="annottext">Rational
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936834"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621680936834"><span class="hs-identifier hs-var">width</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmFloat"><span class="hs-identifier hs-var">cmmFloat</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621680936834"><span class="hs-identifier hs-var">width</span></a></span><span>
</span><span id="line-229"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmVec"><span class="hs-identifier hs-type">CmmVec</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; CmmType
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;cmmLitType: CmmVec []&quot;</span></span><span>
</span><span id="line-230"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmVec"><span class="hs-identifier hs-type">CmmVec</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680936832"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621680936832"><span class="hs-identifier hs-var">l</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621680936831"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621680936831"><span class="hs-identifier hs-var">ls</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680936830"><span class="annot"><span class="annottext">ty :: CmmType
</span><a href="#local-6989586621680936830"><span class="hs-identifier hs-var hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmLit -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmLitType"><span class="hs-identifier hs-var">cmmLitType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936837"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621680936832"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-231"></span><span>                          </span><span class="hs-keyword">in</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">(CmmType -&gt; Bool) -&gt; [CmmType] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; (a -&gt; Bool) -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#all"><span class="hs-identifier hs-var">all</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmType -&gt; CmmType -&gt; Bool
</span><a href="GHC.Cmm.Type.html#cmmEqType"><span class="hs-operator hs-var">`cmmEqType`</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621680936830"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CmmLit -&gt; CmmType) -&gt; [CmmLit] -&gt; [CmmType]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmLit -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmLitType"><span class="hs-identifier hs-var">cmmLitType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936837"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621680936831"><span class="hs-identifier hs-var">ls</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-232"></span><span>                               </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">Int -&gt; CmmType -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmVec"><span class="hs-identifier hs-var">cmmVec</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span class="annot"><span class="annottext">[CmmLit] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621680936831"><span class="hs-identifier hs-var">ls</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621680936830"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-233"></span><span>                               </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">String -&gt; CmmType
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;cmmLitType: CmmVec&quot;</span></span><span>
</span><span id="line-234"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-type">CmmLabel</span></a></span><span> </span><span id="local-6989586621680936824"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621680936824"><span class="hs-identifier hs-var">lbl</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmLabelType"><span class="hs-identifier hs-var">cmmLabelType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936837"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621680936824"><span class="hs-identifier hs-var">lbl</span></a></span><span>
</span><span id="line-235"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-type">CmmLabelOff</span></a></span><span> </span><span id="local-6989586621680936822"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621680936822"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmLabelType"><span class="hs-identifier hs-var">cmmLabelType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936837"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621680936822"><span class="hs-identifier hs-var">lbl</span></a></span><span>
</span><span id="line-236"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-type">CmmLabelDiffOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936821"><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621680936821"><span class="hs-identifier hs-var">width</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmBits"><span class="hs-identifier hs-var">cmmBits</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="#local-6989586621680936821"><span class="hs-identifier hs-var">width</span></a></span><span>
</span><span id="line-237"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmBlock"><span class="hs-identifier hs-type">CmmBlock</span></a></span><span> </span><span class="annot"><span class="annottext">BlockId
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936837"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-238"></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmHighStackMark"><span class="hs-identifier hs-var">CmmHighStackMark</span></a></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936837"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-239"></span><span>
</span><span id="line-240"></span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmLabelType"><span class="hs-identifier hs-type">cmmLabelType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-241"></span><span id="cmmLabelType"><span class="annot"><span class="annottext">cmmLabelType :: Platform -&gt; CLabel -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmLabelType"><span class="hs-identifier hs-var hs-var">cmmLabelType</span></a></span></span><span> </span><span id="local-6989586621680936820"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936820"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621680936819"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621680936819"><span class="hs-identifier hs-var">lbl</span></a></span></span><span>
</span><span id="line-242"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; Bool
</span><a href="GHC.Cmm.CLabel.html#isGcPtrLabel"><span class="hs-identifier hs-var">isGcPtrLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621680936819"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#gcWord"><span class="hs-identifier hs-var">gcWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936820"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-243"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936820"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-244"></span><span>
</span><span id="line-245"></span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmExprWidth"><span class="hs-identifier hs-type">cmmExprWidth</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span>
</span><span id="line-246"></span><span id="cmmExprWidth"><span class="annot"><span class="annottext">cmmExprWidth :: Platform -&gt; CmmExpr -&gt; Width
</span><a href="GHC.Cmm.Expr.html#cmmExprWidth"><span class="hs-identifier hs-var hs-var">cmmExprWidth</span></a></span></span><span> </span><span id="local-6989586621680936816"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936816"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621680936815"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936815"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmExprType"><span class="hs-identifier hs-var">cmmExprType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936816"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936815"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-247"></span><span>
</span><span id="line-248"></span><span class="hs-comment">-- | Returns an alignment in bytes of a CmmExpr when it's a statically</span><span>
</span><span id="line-249"></span><span class="hs-comment">-- known integer constant, otherwise returns an alignment of 1 byte.</span><span>
</span><span id="line-250"></span><span class="hs-comment">-- The caller is responsible for using with a sensible CmmExpr</span><span>
</span><span id="line-251"></span><span class="hs-comment">-- argument.</span><span>
</span><span id="line-252"></span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmExprAlignment"><span class="hs-identifier hs-type">cmmExprAlignment</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Alignment"><span class="hs-identifier hs-type">Alignment</span></a></span><span>
</span><span id="line-253"></span><span id="cmmExprAlignment"><span class="annot"><span class="annottext">cmmExprAlignment :: CmmExpr -&gt; Alignment
</span><a href="GHC.Cmm.Expr.html#cmmExprAlignment"><span class="hs-identifier hs-var hs-var">cmmExprAlignment</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-type">CmmInt</span></a></span><span> </span><span id="local-6989586621680936813"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621680936813"><span class="hs-identifier hs-var">intOff</span></a></span></span><span> </span><span class="annot"><span class="annottext">Width
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Alignment
</span><a href="GHC.Types.Basic.html#alignmentOf"><span class="hs-identifier hs-var">alignmentOf</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Int
forall a. Num a =&gt; Integer -&gt; a
</span><a href="../../base/src/GHC.Num.html#fromInteger"><span class="hs-identifier hs-var">fromInteger</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621680936813"><span class="hs-identifier hs-var">intOff</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-254"></span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmExprAlignment"><span class="hs-identifier hs-var">cmmExprAlignment</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span>                          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Alignment
</span><a href="GHC.Types.Basic.html#mkAlignment"><span class="hs-identifier hs-var">mkAlignment</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span>
</span><span id="line-255"></span><span class="hs-comment">--------</span><span>
</span><span id="line-256"></span><span class="hs-comment">--- Negation for conditional branches</span><span>
</span><span id="line-257"></span><span>
</span><span id="line-258"></span><span class="annot"><a href="GHC.Cmm.Expr.html#maybeInvertCmmExpr"><span class="hs-identifier hs-type">maybeInvertCmmExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-259"></span><span id="maybeInvertCmmExpr"><span class="annot"><span class="annottext">maybeInvertCmmExpr :: CmmExpr -&gt; Maybe CmmExpr
</span><a href="GHC.Cmm.Expr.html#maybeInvertCmmExpr"><span class="hs-identifier hs-var hs-var">maybeInvertCmmExpr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span id="local-6989586621680936812"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936812"><span class="hs-identifier hs-var">op</span></a></span></span><span> </span><span id="local-6989586621680936811"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936811"><span class="hs-identifier hs-var">args</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span id="local-6989586621680936810"><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936810"><span class="hs-identifier hs-var">op'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; Maybe MachOp
</span><a href="GHC.Cmm.MachOp.html#maybeInvertComparison"><span class="hs-identifier hs-var">maybeInvertComparison</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936812"><span class="hs-identifier hs-var">op</span></a></span><span>
</span><span id="line-260"></span><span>                                            </span><span class="annot"><span class="annottext">CmmExpr -&gt; Maybe CmmExpr
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><a href="#local-6989586621680936810"><span class="hs-identifier hs-var">op'</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936811"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-261"></span><span class="annot"><a href="GHC.Cmm.Expr.html#maybeInvertCmmExpr"><span class="hs-identifier hs-var">maybeInvertCmmExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe CmmExpr
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-262"></span><span>
</span><span id="line-263"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-264"></span><span class="hs-comment">--              Local registers</span><span>
</span><span id="line-265"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-266"></span><span>
</span><span id="line-267"></span><span class="hs-keyword">data</span><span> </span><span id="LocalReg"><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-var">LocalReg</span></a></span></span><span>
</span><span id="line-268"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="LocalReg"><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-var">LocalReg</span></a></span></span><span> </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Types.Unique.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-269"></span><span>    </span><span class="hs-comment">-- ^ Parameters:</span><span>
</span><span id="line-270"></span><span>    </span><span class="hs-comment">--   1. Identifier</span><span>
</span><span id="line-271"></span><span>    </span><span class="hs-comment">--   2. Type</span><span>
</span><span id="line-272"></span><span>
</span><span id="line-273"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680936805"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-274"></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span id="local-6989586621680936802"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936802"><span class="hs-identifier hs-var">u1</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680936801"><span class="annot"><span class="annottext">== :: LocalReg -&gt; LocalReg -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span id="local-6989586621680936800"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936800"><span class="hs-identifier hs-var">u2</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936802"><span class="hs-identifier hs-var">u1</span></a></span><span> </span><span class="annot"><span class="annottext">Unique -&gt; Unique -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936800"><span class="hs-identifier hs-var">u2</span></a></span><span>
</span><span id="line-275"></span><span>
</span><span id="line-276"></span><span class="hs-comment">-- This is non-deterministic but we do not currently support deterministic</span><span>
</span><span id="line-277"></span><span class="hs-comment">-- code-generation. See Note [Unique Determinism and code generation]</span><span>
</span><span id="line-278"></span><span class="hs-comment">-- See Note [No Ord for Unique]</span><span>
</span><span id="line-279"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680936785"><span id="local-6989586621680936787"><span id="local-6989586621680936789"><span id="local-6989586621680936791"><span id="local-6989586621680936793"><span id="local-6989586621680936795"><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span></span></span></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-280"></span><span>  </span><span id="local-6989586621680936784"><span class="annot"><span class="annottext">compare :: LocalReg -&gt; LocalReg -&gt; Ordering
</span><span class="hs-identifier hs-var hs-var hs-var hs-var">compare</span></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span id="local-6989586621680936782"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936782"><span class="hs-identifier hs-var">u1</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span id="local-6989586621680936781"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936781"><span class="hs-identifier hs-var">u2</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unique -&gt; Unique -&gt; Ordering
</span><a href="GHC.Types.Unique.html#nonDetCmpUnique"><span class="hs-identifier hs-var">nonDetCmpUnique</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936782"><span class="hs-identifier hs-var">u1</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936781"><span class="hs-identifier hs-var">u2</span></a></span><span>
</span><span id="line-281"></span><span>
</span><span id="line-282"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Types.Unique.html#Uniquable"><span class="hs-identifier hs-type">Uniquable</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-283"></span><span>  </span><span id="local-6989586621680936776"><span class="annot"><span class="annottext">getUnique :: LocalReg -&gt; Unique
</span><a href="GHC.Types.Unique.html#getUnique"><span class="hs-identifier hs-var hs-var hs-var hs-var">getUnique</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span id="local-6989586621680936774"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936774"><span class="hs-identifier hs-var">uniq</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621680936774"><span class="hs-identifier hs-var">uniq</span></a></span><span>
</span><span id="line-284"></span><span>
</span><span id="line-285"></span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmRegType"><span class="hs-identifier hs-type">cmmRegType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-286"></span><span id="cmmRegType"><span class="annot"><span class="annottext">cmmRegType :: Platform -&gt; CmmReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmRegType"><span class="hs-identifier hs-var hs-var">cmmRegType</span></a></span></span><span> </span><span class="annot"><span class="annottext">Platform
</span><span class="hs-identifier">_</span></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span>  </span><span id="local-6989586621680936773"><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621680936773"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LocalReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#localRegType"><span class="hs-identifier hs-var">localRegType</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621680936773"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-287"></span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmRegType"><span class="hs-identifier hs-var">cmmRegType</span></a></span><span> </span><span id="local-6989586621680936772"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936772"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621680936771"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621680936771"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; GlobalReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#globalRegType"><span class="hs-identifier hs-var">globalRegType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936772"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621680936771"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-288"></span><span>
</span><span id="line-289"></span><span class="annot"><a href="GHC.Cmm.Expr.html#cmmRegWidth"><span class="hs-identifier hs-type">cmmRegWidth</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#Width"><span class="hs-identifier hs-type">Width</span></a></span><span>
</span><span id="line-290"></span><span id="cmmRegWidth"><span class="annot"><span class="annottext">cmmRegWidth :: Platform -&gt; CmmReg -&gt; Width
</span><a href="GHC.Cmm.Expr.html#cmmRegWidth"><span class="hs-identifier hs-var hs-var">cmmRegWidth</span></a></span></span><span> </span><span id="local-6989586621680936770"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936770"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType -&gt; Width
</span><a href="GHC.Cmm.Type.html#typeWidth"><span class="hs-identifier hs-var">typeWidth</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmType -&gt; Width) -&gt; (CmmReg -&gt; CmmType) -&gt; CmmReg -&gt; Width
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#cmmRegType"><span class="hs-identifier hs-var">cmmRegType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936770"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-291"></span><span>
</span><span id="line-292"></span><span class="annot"><a href="GHC.Cmm.Expr.html#localRegType"><span class="hs-identifier hs-type">localRegType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-293"></span><span id="localRegType"><span class="annot"><span class="annottext">localRegType :: LocalReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#localRegType"><span class="hs-identifier hs-var hs-var">localRegType</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936768"><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621680936768"><span class="hs-identifier hs-var">rep</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621680936768"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-294"></span><span>
</span><span id="line-295"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-296"></span><span class="hs-comment">--    Register-use information for expressions and other types</span><span>
</span><span id="line-297"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-298"></span><span>
</span><span id="line-299"></span><span class="hs-comment">-- | Sets of registers</span><span>
</span><span id="line-300"></span><span>
</span><span id="line-301"></span><span class="hs-comment">-- These are used for dataflow facts, and a common operation is taking</span><span>
</span><span id="line-302"></span><span class="hs-comment">-- the union of two RegSets and then asking whether the union is the</span><span>
</span><span id="line-303"></span><span class="hs-comment">-- same as one of the inputs.  UniqSet isn't good here, because</span><span>
</span><span id="line-304"></span><span class="hs-comment">-- sizeUniqSet is O(n) whereas Set.size is O(1), so we use ordinary</span><span>
</span><span id="line-305"></span><span class="hs-comment">-- Sets.</span><span>
</span><span id="line-306"></span><span>
</span><span id="line-307"></span><span class="hs-keyword">type</span><span> </span><span id="RegSet"><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-var">RegSet</span></a></span></span><span> </span><span id="local-6989586621680936767"><span class="annot"><a href="#local-6989586621680936767"><span class="hs-identifier hs-type">r</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="../../containers/src/Data.Set.Internal.html#Set"><span class="hs-identifier hs-type">Set</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680936767"><span class="hs-identifier hs-type">r</span></a></span><span>
</span><span id="line-308"></span><span class="hs-keyword">type</span><span> </span><span id="LocalRegSet"><span class="annot"><a href="GHC.Cmm.Expr.html#LocalRegSet"><span class="hs-identifier hs-var">LocalRegSet</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span>
</span><span id="line-309"></span><span class="hs-keyword">type</span><span> </span><span id="GlobalRegSet"><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalRegSet"><span class="hs-identifier hs-var">GlobalRegSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span>
</span><span id="line-310"></span><span>
</span><span id="line-311"></span><span id="local-6989586621680937144"><span class="annot"><a href="GHC.Cmm.Expr.html#emptyRegSet"><span class="hs-identifier hs-type">emptyRegSet</span></a></span><span>             </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937144"><span class="hs-identifier hs-type">r</span></a></span></span><span>
</span><span id="line-312"></span><span id="local-6989586621680937140"><span class="annot"><a href="GHC.Cmm.Expr.html#nullRegSet"><span class="hs-identifier hs-type">nullRegSet</span></a></span><span>              </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937140"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-313"></span><span id="local-6989586621680937138"><span class="annot"><a href="GHC.Cmm.Expr.html#elemRegSet"><span class="hs-identifier hs-type">elemRegSet</span></a></span><span>              </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680937138"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937138"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937138"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-314"></span><span id="local-6989586621680937136"><span class="annot"><a href="GHC.Cmm.Expr.html#extendRegSet"><span class="hs-identifier hs-type">extendRegSet</span></a></span><span>            </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680937136"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937136"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937136"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937136"><span class="hs-identifier hs-type">r</span></a></span></span><span>
</span><span id="line-315"></span><span id="local-6989586621680936766"><span class="annot"><a href="GHC.Cmm.Expr.html#deleteFromRegSet"><span class="hs-identifier hs-type">deleteFromRegSet</span></a></span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680936766"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680936766"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680936766"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680936766"><span class="hs-identifier hs-type">r</span></a></span></span><span>
</span><span id="line-316"></span><span id="local-6989586621680937129"><span class="annot"><a href="GHC.Cmm.Expr.html#mkRegSet"><span class="hs-identifier hs-type">mkRegSet</span></a></span><span>                </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680937129"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621680937129"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937129"><span class="hs-identifier hs-type">r</span></a></span></span><span>
</span><span id="line-317"></span><span id="local-6989586621680937127"><span class="annot"><a href="GHC.Cmm.Expr.html#minusRegSet"><span class="hs-identifier hs-type">minusRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#plusRegSet"><span class="hs-identifier hs-type">plusRegSet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#timesRegSet"><span class="hs-identifier hs-type">timesRegSet</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680937127"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937127"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937127"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937127"><span class="hs-identifier hs-type">r</span></a></span></span><span>
</span><span id="line-318"></span><span id="local-6989586621680937123"><span class="annot"><a href="GHC.Cmm.Expr.html#sizeRegSet"><span class="hs-identifier hs-type">sizeRegSet</span></a></span><span>              </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937123"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span></span><span>
</span><span id="line-319"></span><span id="local-6989586621680937121"><span class="annot"><a href="GHC.Cmm.Expr.html#regSetToList"><span class="hs-identifier hs-type">regSetToList</span></a></span><span>            </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#RegSet"><span class="hs-identifier hs-type">RegSet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937121"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621680937121"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">]</span></span><span>
</span><span id="line-320"></span><span>
</span><span id="line-321"></span><span id="emptyRegSet"><span class="annot"><span class="annottext">emptyRegSet :: forall r. RegSet r
</span><a href="GHC.Cmm.Expr.html#emptyRegSet"><span class="hs-identifier hs-var hs-var">emptyRegSet</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Set r
forall r. RegSet r
</span><a href="../../containers/src/Data.Set.Internal.html#empty"><span class="hs-identifier hs-var">Set.empty</span></a></span><span>
</span><span id="line-322"></span><span id="nullRegSet"><span class="annot"><span class="annottext">nullRegSet :: forall r. RegSet r -&gt; Bool
</span><a href="GHC.Cmm.Expr.html#nullRegSet"><span class="hs-identifier hs-var hs-var">nullRegSet</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Set r -&gt; Bool
forall r. RegSet r -&gt; Bool
</span><a href="../../containers/src/Data.Set.Internal.html#null"><span class="hs-identifier hs-var">Set.null</span></a></span><span>
</span><span id="line-323"></span><span id="elemRegSet"><span class="annot"><span class="annottext">elemRegSet :: forall r. Ord r =&gt; r -&gt; RegSet r -&gt; Bool
</span><a href="GHC.Cmm.Expr.html#elemRegSet"><span class="hs-identifier hs-var hs-var">elemRegSet</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">r -&gt; Set r -&gt; Bool
forall r. Ord r =&gt; r -&gt; RegSet r -&gt; Bool
</span><a href="../../containers/src/Data.Set.Internal.html#member"><span class="hs-identifier hs-var">Set.member</span></a></span><span>
</span><span id="line-324"></span><span id="extendRegSet"><span class="annot"><span class="annottext">extendRegSet :: forall r. Ord r =&gt; RegSet r -&gt; r -&gt; RegSet r
</span><a href="GHC.Cmm.Expr.html#extendRegSet"><span class="hs-identifier hs-var hs-var">extendRegSet</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(r -&gt; Set r -&gt; Set r) -&gt; Set r -&gt; r -&gt; Set r
forall a b c. (a -&gt; b -&gt; c) -&gt; b -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#flip"><span class="hs-identifier hs-var">flip</span></a></span><span> </span><span class="annot"><span class="annottext">r -&gt; Set r -&gt; Set r
forall a. Ord a =&gt; a -&gt; Set a -&gt; Set a
</span><a href="../../containers/src/Data.Set.Internal.html#insert"><span class="hs-identifier hs-var">Set.insert</span></a></span><span>
</span><span id="line-325"></span><span id="deleteFromRegSet"><span class="annot"><span class="annottext">deleteFromRegSet :: forall r. Ord r =&gt; RegSet r -&gt; r -&gt; RegSet r
</span><a href="GHC.Cmm.Expr.html#deleteFromRegSet"><span class="hs-identifier hs-var hs-var">deleteFromRegSet</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(r -&gt; Set r -&gt; Set r) -&gt; Set r -&gt; r -&gt; Set r
forall a b c. (a -&gt; b -&gt; c) -&gt; b -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#flip"><span class="hs-identifier hs-var">flip</span></a></span><span> </span><span class="annot"><span class="annottext">r -&gt; Set r -&gt; Set r
forall a. Ord a =&gt; a -&gt; Set a -&gt; Set a
</span><a href="../../containers/src/Data.Set.Internal.html#delete"><span class="hs-identifier hs-var">Set.delete</span></a></span><span>
</span><span id="line-326"></span><span id="mkRegSet"><span class="annot"><span class="annottext">mkRegSet :: forall r. Ord r =&gt; [r] -&gt; RegSet r
</span><a href="GHC.Cmm.Expr.html#mkRegSet"><span class="hs-identifier hs-var hs-var">mkRegSet</span></a></span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[r] -&gt; Set r
forall r. Ord r =&gt; [r] -&gt; RegSet r
</span><a href="../../containers/src/Data.Set.Internal.html#fromList"><span class="hs-identifier hs-var">Set.fromList</span></a></span><span>
</span><span id="line-327"></span><span id="minusRegSet"><span class="annot"><span class="annottext">minusRegSet :: forall r. Ord r =&gt; RegSet r -&gt; RegSet r -&gt; RegSet r
</span><a href="GHC.Cmm.Expr.html#minusRegSet"><span class="hs-identifier hs-var hs-var">minusRegSet</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Set r -&gt; Set r -&gt; Set r
forall r. Ord r =&gt; RegSet r -&gt; RegSet r -&gt; RegSet r
</span><a href="../../containers/src/Data.Set.Internal.html#difference"><span class="hs-identifier hs-var">Set.difference</span></a></span><span>
</span><span id="line-328"></span><span id="plusRegSet"><span class="annot"><span class="annottext">plusRegSet :: forall r. Ord r =&gt; RegSet r -&gt; RegSet r -&gt; RegSet r
</span><a href="GHC.Cmm.Expr.html#plusRegSet"><span class="hs-identifier hs-var hs-var">plusRegSet</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Set r -&gt; Set r -&gt; Set r
forall r. Ord r =&gt; RegSet r -&gt; RegSet r -&gt; RegSet r
</span><a href="../../containers/src/Data.Set.Internal.html#union"><span class="hs-identifier hs-var">Set.union</span></a></span><span>
</span><span id="line-329"></span><span id="timesRegSet"><span class="annot"><span class="annottext">timesRegSet :: forall r. Ord r =&gt; RegSet r -&gt; RegSet r -&gt; RegSet r
</span><a href="GHC.Cmm.Expr.html#timesRegSet"><span class="hs-identifier hs-var hs-var">timesRegSet</span></a></span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Set r -&gt; Set r -&gt; Set r
forall r. Ord r =&gt; RegSet r -&gt; RegSet r -&gt; RegSet r
</span><a href="../../containers/src/Data.Set.Internal.html#intersection"><span class="hs-identifier hs-var">Set.intersection</span></a></span><span>
</span><span id="line-330"></span><span id="sizeRegSet"><span class="annot"><span class="annottext">sizeRegSet :: forall r. RegSet r -&gt; Int
</span><a href="GHC.Cmm.Expr.html#sizeRegSet"><span class="hs-identifier hs-var hs-var">sizeRegSet</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Set r -&gt; Int
forall r. RegSet r -&gt; Int
</span><a href="../../containers/src/Data.Set.Internal.html#size"><span class="hs-identifier hs-var">Set.size</span></a></span><span>
</span><span id="line-331"></span><span id="regSetToList"><span class="annot"><span class="annottext">regSetToList :: forall r. RegSet r -&gt; [r]
</span><a href="GHC.Cmm.Expr.html#regSetToList"><span class="hs-identifier hs-var hs-var">regSetToList</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Set r -&gt; [r]
forall r. RegSet r -&gt; [r]
</span><a href="../../containers/src/Data.Set.Internal.html#toList"><span class="hs-identifier hs-var">Set.toList</span></a></span><span>
</span><span id="line-332"></span><span>
</span><span id="line-333"></span><span class="hs-keyword">class</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680937119"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span id="UserOfRegs"><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier hs-var">UserOfRegs</span></a></span></span><span> </span><span id="local-6989586621680937119"><span class="annot"><a href="#local-6989586621680937119"><span class="hs-identifier hs-type">r</span></a></span></span><span> </span><span id="local-6989586621680937118"><span class="annot"><a href="#local-6989586621680937118"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-334"></span><span>  </span><span id="local-6989586621680937111"><span id="foldRegsUsed"><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier hs-type">foldRegsUsed</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680937111"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937119"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937111"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937111"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937118"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937111"><span class="hs-identifier hs-type">b</span></a></span></span><span>
</span><span id="line-335"></span><span>
</span><span id="line-336"></span><span id="local-6989586621680937114"><span id="local-6989586621680937116"><span class="annot"><a href="GHC.Cmm.Expr.html#foldLocalRegsUsed"><span class="hs-identifier hs-type">foldLocalRegsUsed</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier hs-type">UserOfRegs</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937116"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-337"></span><span>                  </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680937114"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937114"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937114"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937116"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937114"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-338"></span><span id="foldLocalRegsUsed"><span class="annot"><span class="annottext">foldLocalRegsUsed :: forall a b.
UserOfRegs LocalReg a =&gt;
DynFlags -&gt; (b -&gt; LocalReg -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldLocalRegsUsed"><span class="hs-identifier hs-var hs-var">foldLocalRegsUsed</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; (b -&gt; LocalReg -&gt; b) -&gt; b -&gt; a -&gt; b
forall r a b.
UserOfRegs r a =&gt;
DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier hs-var">foldRegsUsed</span></a></span><span>
</span><span id="line-339"></span><span>
</span><span id="line-340"></span><span class="hs-keyword">class</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680937110"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span id="DefinerOfRegs"><span class="annot"><a href="GHC.Cmm.Expr.html#DefinerOfRegs"><span class="hs-identifier hs-var">DefinerOfRegs</span></a></span></span><span> </span><span id="local-6989586621680937110"><span class="annot"><a href="#local-6989586621680937110"><span class="hs-identifier hs-type">r</span></a></span></span><span> </span><span id="local-6989586621680937109"><span class="annot"><a href="#local-6989586621680937109"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-341"></span><span>  </span><span id="local-6989586621680937103"><span id="foldRegsDefd"><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsDefd"><span class="hs-identifier hs-type">foldRegsDefd</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680937103"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937110"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937103"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937103"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937109"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937103"><span class="hs-identifier hs-type">b</span></a></span></span><span>
</span><span id="line-342"></span><span>
</span><span id="line-343"></span><span id="local-6989586621680937106"><span id="local-6989586621680937107"><span class="annot"><a href="GHC.Cmm.Expr.html#foldLocalRegsDefd"><span class="hs-identifier hs-type">foldLocalRegsDefd</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#DefinerOfRegs"><span class="hs-identifier hs-type">DefinerOfRegs</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937107"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-344"></span><span>                  </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621680937106"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937106"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937106"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937107"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680937106"><span class="hs-identifier hs-type">b</span></a></span></span></span><span>
</span><span id="line-345"></span><span id="foldLocalRegsDefd"><span class="annot"><span class="annottext">foldLocalRegsDefd :: forall a b.
DefinerOfRegs LocalReg a =&gt;
DynFlags -&gt; (b -&gt; LocalReg -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldLocalRegsDefd"><span class="hs-identifier hs-var hs-var">foldLocalRegsDefd</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; (b -&gt; LocalReg -&gt; b) -&gt; b -&gt; a -&gt; b
forall r a b.
DefinerOfRegs r a =&gt;
DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldRegsDefd"><span class="hs-identifier hs-var">foldRegsDefd</span></a></span><span>
</span><span id="line-346"></span><span>
</span><span id="line-347"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier hs-type">UserOfRegs</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-348"></span><span>    </span><span id="local-6989586621680936728"><span class="annot"><span class="annottext">foldRegsUsed :: forall b. DynFlags -&gt; (b -&gt; LocalReg -&gt; b) -&gt; b -&gt; CmmReg -&gt; b
</span><a href="#local-6989586621680936728"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldRegsUsed</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936727"><span class="annot"><span class="annottext">b -&gt; LocalReg -&gt; b
</span><a href="#local-6989586621680936727"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680936726"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936726"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span id="local-6989586621680936725"><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621680936725"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b -&gt; LocalReg -&gt; b
</span><a href="#local-6989586621680936727"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936726"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621680936725"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-349"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier hs-var">foldRegsUsed</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">b -&gt; LocalReg -&gt; b
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936724"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936724"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936724"><span class="hs-identifier hs-var">z</span></a></span><span>
</span><span id="line-350"></span><span>
</span><span id="line-351"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#DefinerOfRegs"><span class="hs-identifier hs-type">DefinerOfRegs</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LocalReg"><span class="hs-identifier hs-type">LocalReg</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-352"></span><span>    </span><span id="local-6989586621680936718"><span class="annot"><span class="annottext">foldRegsDefd :: forall b. DynFlags -&gt; (b -&gt; LocalReg -&gt; b) -&gt; b -&gt; CmmReg -&gt; b
</span><a href="#local-6989586621680936718"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldRegsDefd</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936717"><span class="annot"><span class="annottext">b -&gt; LocalReg -&gt; b
</span><a href="#local-6989586621680936717"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680936716"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936716"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span id="local-6989586621680936715"><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621680936715"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b -&gt; LocalReg -&gt; b
</span><a href="#local-6989586621680936717"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936716"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><a href="#local-6989586621680936715"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-353"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsDefd"><span class="hs-identifier hs-var">foldRegsDefd</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">b -&gt; LocalReg -&gt; b
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936714"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936714"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936714"><span class="hs-identifier hs-var">z</span></a></span><span>
</span><span id="line-354"></span><span>
</span><span id="line-355"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier hs-type">UserOfRegs</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-356"></span><span>    </span><span id="local-6989586621680936709"><span class="annot"><span class="annottext">foldRegsUsed :: forall b. DynFlags -&gt; (b -&gt; GlobalReg -&gt; b) -&gt; b -&gt; CmmReg -&gt; b
</span><a href="#local-6989586621680936709"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldRegsUsed</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">b -&gt; GlobalReg -&gt; b
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936708"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936708"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936708"><span class="hs-identifier hs-var">z</span></a></span><span>
</span><span id="line-357"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier hs-var">foldRegsUsed</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936707"><span class="annot"><span class="annottext">b -&gt; GlobalReg -&gt; b
</span><a href="#local-6989586621680936707"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680936706"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936706"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621680936705"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621680936705"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b -&gt; GlobalReg -&gt; b
</span><a href="#local-6989586621680936707"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936706"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621680936705"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-358"></span><span>
</span><span id="line-359"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#DefinerOfRegs"><span class="hs-identifier hs-type">DefinerOfRegs</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-360"></span><span>    </span><span id="local-6989586621680936700"><span class="annot"><span class="annottext">foldRegsDefd :: forall b. DynFlags -&gt; (b -&gt; GlobalReg -&gt; b) -&gt; b -&gt; CmmReg -&gt; b
</span><a href="#local-6989586621680936700"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldRegsDefd</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">b -&gt; GlobalReg -&gt; b
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936699"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936699"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLocal"><span class="hs-identifier hs-type">CmmLocal</span></a></span><span> </span><span class="annot"><span class="annottext">LocalReg
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936699"><span class="hs-identifier hs-var">z</span></a></span><span>
</span><span id="line-361"></span><span>    </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsDefd"><span class="hs-identifier hs-var">foldRegsDefd</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936698"><span class="annot"><span class="annottext">b -&gt; GlobalReg -&gt; b
</span><a href="#local-6989586621680936698"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680936697"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936697"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621680936696"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621680936696"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b -&gt; GlobalReg -&gt; b
</span><a href="#local-6989586621680936698"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936697"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621680936696"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-362"></span><span>
</span><span id="line-363"></span><span id="local-6989586621680937097"><span class="hs-keyword">instance</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680937097"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier hs-type">UserOfRegs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937097"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937097"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-364"></span><span>    </span><span id="local-6989586621680936690"><span class="annot"><span class="annottext">foldRegsUsed :: forall b. DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; r -&gt; b
</span><a href="#local-6989586621680936690"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldRegsUsed</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936689"><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936689"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680936688"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936688"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span id="local-6989586621680936687"><span class="annot"><span class="annottext">r
</span><a href="#local-6989586621680936687"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936689"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936688"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">r
</span><a href="#local-6989586621680936687"><span class="hs-identifier hs-var">r</span></a></span></span><span>
</span><span id="line-365"></span><span>
</span><span id="line-366"></span><span id="local-6989586621680937094"><span class="hs-keyword">instance</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680937094"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#DefinerOfRegs"><span class="hs-identifier hs-type">DefinerOfRegs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937094"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937094"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-367"></span><span>    </span><span id="local-6989586621680936681"><span class="annot"><span class="annottext">foldRegsDefd :: forall b. DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; r -&gt; b
</span><a href="#local-6989586621680936681"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldRegsDefd</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936680"><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936680"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680936679"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936679"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span id="local-6989586621680936678"><span class="annot"><span class="annottext">r
</span><a href="#local-6989586621680936678"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936680"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936679"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">r
</span><a href="#local-6989586621680936678"><span class="hs-identifier hs-var">r</span></a></span></span><span>
</span><span id="line-368"></span><span>
</span><span id="line-369"></span><span id="local-6989586621680937091"><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621680937091"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier hs-type">UserOfRegs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937091"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier hs-type">UserOfRegs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937091"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-370"></span><span>  </span><span class="hs-comment">-- The (Ord r) in the context is necessary here</span><span>
</span><span id="line-371"></span><span>  </span><span class="hs-comment">-- See Note [Recursive superclasses] in GHC.Tc.TyCl.Instance</span><span>
</span><span id="line-372"></span><span>  </span><span id="local-6989586621680936671"><span class="annot"><span class="annottext">foldRegsUsed :: forall b. DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; CmmExpr -&gt; b
</span><a href="#local-6989586621680936671"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldRegsUsed</span></a></span></span><span> </span><span id="local-6989586621680936670"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680936670"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621680936669"><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936669"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-glyph">!</span><span id="local-6989586621680936668"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936668"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span id="local-6989586621680936667"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936667"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b -&gt; CmmExpr -&gt; b
</span><a href="#local-6989586621680936666"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936668"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936667"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-373"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621680936666"><span class="annot"><span class="annottext">expr :: b -&gt; CmmExpr -&gt; b
</span><a href="#local-6989586621680936666"><span class="hs-identifier hs-var hs-var">expr</span></a></span></span><span> </span><span id="local-6989586621680936658"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936658"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936658"><span class="hs-identifier hs-var">z</span></a></span><span>
</span><span id="line-374"></span><span>          </span><span class="annot"><a href="#local-6989586621680936666"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span id="local-6989586621680936657"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936657"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-type">CmmLoad</span></a></span><span> </span><span id="local-6989586621680936656"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936656"><span class="hs-identifier hs-var">addr</span></a></span></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; CmmExpr -&gt; b
forall r a b.
UserOfRegs r a =&gt;
DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier hs-var">foldRegsUsed</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680936670"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936669"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936657"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621680936656"><span class="hs-identifier hs-var">addr</span></a></span><span>
</span><span id="line-375"></span><span>          </span><span class="annot"><a href="#local-6989586621680936666"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span id="local-6989586621680936655"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936655"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span id="local-6989586621680936654"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936654"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; CmmReg -&gt; b
forall r a b.
UserOfRegs r a =&gt;
DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier hs-var">foldRegsUsed</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680936670"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936669"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936655"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936654"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-376"></span><span>          </span><span class="annot"><a href="#local-6989586621680936666"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span id="local-6989586621680936653"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936653"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-type">CmmMachOp</span></a></span><span> </span><span class="annot"><span class="annottext">MachOp
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936652"><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936652"><span class="hs-identifier hs-var">exprs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; [CmmExpr] -&gt; b
forall r a b.
UserOfRegs r a =&gt;
DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier hs-var">foldRegsUsed</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680936670"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936669"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936653"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmExpr]
</span><a href="#local-6989586621680936652"><span class="hs-identifier hs-var">exprs</span></a></span><span>
</span><span id="line-377"></span><span>          </span><span class="annot"><a href="#local-6989586621680936666"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span id="local-6989586621680936651"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936651"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span id="local-6989586621680936650"><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936650"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; CmmReg -&gt; b
forall r a b.
UserOfRegs r a =&gt;
DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier hs-var">foldRegsUsed</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680936670"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936669"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936651"><span class="hs-identifier hs-var">z</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="#local-6989586621680936650"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-378"></span><span>          </span><span class="annot"><a href="#local-6989586621680936666"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span id="local-6989586621680936649"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936649"><span class="hs-identifier hs-var">z</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmStackSlot"><span class="hs-identifier hs-type">CmmStackSlot</span></a></span><span> </span><span class="annot"><span class="annottext">Area
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936649"><span class="hs-identifier hs-var">z</span></a></span></span><span>
</span><span id="line-379"></span><span>
</span><span id="line-380"></span><span id="local-6989586621680937088"><span id="local-6989586621680937089"><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier hs-type">UserOfRegs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937089"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937088"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#UserOfRegs"><span class="hs-identifier hs-type">UserOfRegs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937089"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621680937088"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-381"></span><span>  </span><span id="local-6989586621680936641"><span class="annot"><span class="annottext">foldRegsUsed :: forall b. DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; [a] -&gt; b
</span><a href="#local-6989586621680936641"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldRegsUsed</span></a></span></span><span> </span><span id="local-6989586621680936640"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680936640"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621680936639"><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936639"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680936638"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936638"><span class="hs-identifier hs-var">set</span></a></span></span><span> </span><span id="local-6989586621680936637"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680936637"><span class="hs-keyword hs-var">as</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(b -&gt; a -&gt; b) -&gt; b -&gt; [a] -&gt; b
forall (t :: * -&gt; *) b a.
Foldable t =&gt;
(b -&gt; a -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldl%27"><span class="hs-identifier hs-var">foldl'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
forall r a b.
UserOfRegs r a =&gt;
DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-identifier hs-var">foldRegsUsed</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680936640"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936639"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936638"><span class="hs-identifier hs-var">set</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680936637"><span class="hs-keyword hs-var">as</span></a></span><span>
</span><span id="line-382"></span><span>  </span><span class="hs-pragma">{-# INLINABLE</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsUsed"><span class="hs-pragma hs-type">foldRegsUsed</span></a></span><span> </span><span class="hs-pragma">#-}</span></span></span><span>
</span><span id="line-383"></span><span>
</span><span id="line-384"></span><span id="local-6989586621680937079"><span id="local-6989586621680937080"><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#DefinerOfRegs"><span class="hs-identifier hs-type">DefinerOfRegs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937080"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937079"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#DefinerOfRegs"><span class="hs-identifier hs-type">DefinerOfRegs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680937080"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621680937079"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-385"></span><span>  </span><span id="local-6989586621680936627"><span class="annot"><span class="annottext">foldRegsDefd :: forall b. DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; [a] -&gt; b
</span><a href="#local-6989586621680936627"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldRegsDefd</span></a></span></span><span> </span><span id="local-6989586621680936626"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680936626"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621680936625"><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936625"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680936624"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936624"><span class="hs-identifier hs-var">set</span></a></span></span><span> </span><span id="local-6989586621680936623"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680936623"><span class="hs-keyword hs-var">as</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(b -&gt; a -&gt; b) -&gt; b -&gt; [a] -&gt; b
forall (t :: * -&gt; *) b a.
Foldable t =&gt;
(b -&gt; a -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldl%27"><span class="hs-identifier hs-var">foldl'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
forall r a b.
DefinerOfRegs r a =&gt;
DynFlags -&gt; (b -&gt; r -&gt; b) -&gt; b -&gt; a -&gt; b
</span><a href="GHC.Cmm.Expr.html#foldRegsDefd"><span class="hs-identifier hs-var">foldRegsDefd</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680936626"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">b -&gt; r -&gt; b
</span><a href="#local-6989586621680936625"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680936624"><span class="hs-identifier hs-var">set</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621680936623"><span class="hs-keyword hs-var">as</span></a></span><span>
</span><span id="line-386"></span><span>  </span><span class="hs-pragma">{-# INLINABLE</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#foldRegsDefd"><span class="hs-pragma hs-type">foldRegsDefd</span></a></span><span> </span><span class="hs-pragma">#-}</span></span></span><span>
</span><span id="line-387"></span><span>
</span><span id="line-388"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-389"></span><span class="hs-comment">--              Global STG registers</span><span>
</span><span id="line-390"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-391"></span><span>
</span><span id="line-392"></span><span class="hs-keyword">data</span><span> </span><span id="VGcPtr"><span class="annot"><a href="GHC.Cmm.Expr.html#VGcPtr"><span class="hs-identifier hs-var">VGcPtr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="VGcPtr"><span class="annot"><a href="GHC.Cmm.Expr.html#VGcPtr"><span class="hs-identifier hs-var">VGcPtr</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span id="VNonGcPtr"><span class="annot"><a href="GHC.Cmm.Expr.html#VNonGcPtr"><span class="hs-identifier hs-var">VNonGcPtr</span></a></span></span><span> </span><span class="hs-keyword">deriving</span><span class="hs-special">(</span><span> </span><span id="local-6989586621680936617"><span id="local-6989586621680936619"><span class="annot"><span class="annottext">VGcPtr -&gt; VGcPtr -&gt; Bool
(VGcPtr -&gt; VGcPtr -&gt; Bool)
-&gt; (VGcPtr -&gt; VGcPtr -&gt; Bool) -&gt; Eq VGcPtr
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: VGcPtr -&gt; VGcPtr -&gt; Bool
$c/= :: VGcPtr -&gt; VGcPtr -&gt; Bool
== :: VGcPtr -&gt; VGcPtr -&gt; Bool
$c== :: VGcPtr -&gt; VGcPtr -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680936611"><span id="local-6989586621680936613"><span id="local-6989586621680936615"><span class="annot"><span class="annottext">Int -&gt; VGcPtr -&gt; ShowS
[VGcPtr] -&gt; ShowS
VGcPtr -&gt; String
(Int -&gt; VGcPtr -&gt; ShowS)
-&gt; (VGcPtr -&gt; String) -&gt; ([VGcPtr] -&gt; ShowS) -&gt; Show VGcPtr
forall a.
(Int -&gt; a -&gt; ShowS) -&gt; (a -&gt; String) -&gt; ([a] -&gt; ShowS) -&gt; Show a
showList :: [VGcPtr] -&gt; ShowS
$cshowList :: [VGcPtr] -&gt; ShowS
show :: VGcPtr -&gt; String
$cshow :: VGcPtr -&gt; String
showsPrec :: Int -&gt; VGcPtr -&gt; ShowS
$cshowsPrec :: Int -&gt; VGcPtr -&gt; ShowS
</span><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Show</span></a></span></span></span></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-393"></span><span>
</span><span id="line-394"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-395"></span><span class="hs-comment">--              Global STG registers</span><span>
</span><span id="line-396"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-397"></span><span class="hs-comment">{-
Note [Overlapping global registers]

The backend might not faithfully implement the abstraction of the STG
machine with independent registers for different values of type
GlobalReg. Specifically, certain pairs of registers (r1, r2) may
overlap in the sense that a store to r1 invalidates the value in r2,
and vice versa.

Currently this occurs only on the x86_64 architecture where FloatReg n
and DoubleReg n are assigned the same microarchitectural register, in
order to allow functions to receive more Float# or Double# arguments
in registers (as opposed to on the stack).

There are no specific rules about which registers might overlap with
which other registers, but presumably it's safe to assume that nothing
will overlap with special registers like Sp or BaseReg.

Use GHC.Cmm.Utils.regsOverlap to determine whether two GlobalRegs overlap
on a particular platform. The instance Eq GlobalReg is syntactic
equality of STG registers and does not take overlap into
account. However it is still used in UserOfRegs/DefinerOfRegs and
there are likely still bugs there, beware!
-}</span><span>
</span><span id="line-421"></span><span>
</span><span id="line-422"></span><span class="hs-keyword">data</span><span> </span><span id="GlobalReg"><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-var">GlobalReg</span></a></span></span><span>
</span><span id="line-423"></span><span>  </span><span class="hs-comment">-- Argument and return registers</span><span>
</span><span id="line-424"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="VanillaReg"><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-var">VanillaReg</span></a></span></span><span>                  </span><span class="hs-comment">-- pointers, unboxed ints and chars</span><span>
</span><span id="line-425"></span><span>        </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>     </span><span class="hs-comment">-- its number</span><span>
</span><span id="line-426"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Expr.html#VGcPtr"><span class="hs-identifier hs-type">VGcPtr</span></a></span><span>
</span><span id="line-427"></span><span>
</span><span id="line-428"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="FloatReg"><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-var">FloatReg</span></a></span></span><span>            </span><span class="hs-comment">-- single-precision floating-point registers</span><span>
</span><span id="line-429"></span><span>        </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>     </span><span class="hs-comment">-- its number</span><span>
</span><span id="line-430"></span><span>
</span><span id="line-431"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DoubleReg"><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-var">DoubleReg</span></a></span></span><span>           </span><span class="hs-comment">-- double-precision floating-point registers</span><span>
</span><span id="line-432"></span><span>        </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>     </span><span class="hs-comment">-- its number</span><span>
</span><span id="line-433"></span><span>
</span><span id="line-434"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="LongReg"><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-var">LongReg</span></a></span></span><span>             </span><span class="hs-comment">-- long int registers (64-bit, really)</span><span>
</span><span id="line-435"></span><span>        </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>     </span><span class="hs-comment">-- its number</span><span>
</span><span id="line-436"></span><span>
</span><span id="line-437"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="XmmReg"><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-var">XmmReg</span></a></span></span><span>                      </span><span class="hs-comment">-- 128-bit SIMD vector register</span><span>
</span><span id="line-438"></span><span>        </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>     </span><span class="hs-comment">-- its number</span><span>
</span><span id="line-439"></span><span>
</span><span id="line-440"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="YmmReg"><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-var">YmmReg</span></a></span></span><span>                      </span><span class="hs-comment">-- 256-bit SIMD vector register</span><span>
</span><span id="line-441"></span><span>        </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>     </span><span class="hs-comment">-- its number</span><span>
</span><span id="line-442"></span><span>
</span><span id="line-443"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ZmmReg"><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-var">ZmmReg</span></a></span></span><span>                      </span><span class="hs-comment">-- 512-bit SIMD vector register</span><span>
</span><span id="line-444"></span><span>        </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>     </span><span class="hs-comment">-- its number</span><span>
</span><span id="line-445"></span><span>
</span><span id="line-446"></span><span>  </span><span class="hs-comment">-- STG registers</span><span>
</span><span id="line-447"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="Sp"><span class="annot"><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span></span><span>                  </span><span class="hs-comment">-- Stack ptr; points to last occupied stack location.</span><span>
</span><span id="line-448"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SpLim"><span class="annot"><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span></span><span>               </span><span class="hs-comment">-- Stack limit</span><span>
</span><span id="line-449"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="Hp"><span class="annot"><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span></span><span>                  </span><span class="hs-comment">-- Heap ptr; points to last occupied heap location.</span><span>
</span><span id="line-450"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="HpLim"><span class="annot"><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span></span><span>               </span><span class="hs-comment">-- Heap limit register</span><span>
</span><span id="line-451"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CCCS"><span class="annot"><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span></span><span>                </span><span class="hs-comment">-- Current cost-centre stack</span><span>
</span><span id="line-452"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CurrentTSO"><span class="annot"><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span></span><span>          </span><span class="hs-comment">-- pointer to current thread's TSO</span><span>
</span><span id="line-453"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CurrentNursery"><span class="annot"><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span></span><span>      </span><span class="hs-comment">-- pointer to allocation area</span><span>
</span><span id="line-454"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="HpAlloc"><span class="annot"><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span></span><span>             </span><span class="hs-comment">-- allocation count for heap check failure</span><span>
</span><span id="line-455"></span><span>
</span><span id="line-456"></span><span>                </span><span class="hs-comment">-- We keep the address of some commonly-called</span><span>
</span><span id="line-457"></span><span>                </span><span class="hs-comment">-- functions in the register table, to keep code</span><span>
</span><span id="line-458"></span><span>                </span><span class="hs-comment">-- size down:</span><span>
</span><span id="line-459"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="EagerBlackholeInfo"><span class="annot"><a href="GHC.Cmm.Expr.html#EagerBlackholeInfo"><span class="hs-identifier hs-var">EagerBlackholeInfo</span></a></span></span><span>  </span><span class="hs-comment">-- stg_EAGER_BLACKHOLE_info</span><span>
</span><span id="line-460"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="GCEnter1"><span class="annot"><a href="GHC.Cmm.Expr.html#GCEnter1"><span class="hs-identifier hs-var">GCEnter1</span></a></span></span><span>            </span><span class="hs-comment">-- stg_gc_enter_1</span><span>
</span><span id="line-461"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="GCFun"><span class="annot"><a href="GHC.Cmm.Expr.html#GCFun"><span class="hs-identifier hs-var">GCFun</span></a></span></span><span>               </span><span class="hs-comment">-- stg_gc_fun</span><span>
</span><span id="line-462"></span><span>
</span><span id="line-463"></span><span>  </span><span class="hs-comment">-- Base offset for the register table, used for accessing registers</span><span>
</span><span id="line-464"></span><span>  </span><span class="hs-comment">-- which do not have real registers assigned to them.  This register</span><span>
</span><span id="line-465"></span><span>  </span><span class="hs-comment">-- will only appear after we have expanded GlobalReg into memory accesses</span><span>
</span><span id="line-466"></span><span>  </span><span class="hs-comment">-- (where necessary) in the native code generator.</span><span>
</span><span id="line-467"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="BaseReg"><span class="annot"><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span></span><span>
</span><span id="line-468"></span><span>
</span><span id="line-469"></span><span>  </span><span class="hs-comment">-- The register used by the platform for the C stack pointer. This is</span><span>
</span><span id="line-470"></span><span>  </span><span class="hs-comment">-- a break in the STG abstraction used exclusively to setup stack unwinding</span><span>
</span><span id="line-471"></span><span>  </span><span class="hs-comment">-- information.</span><span>
</span><span id="line-472"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="MachSp"><span class="annot"><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span></span><span>
</span><span id="line-473"></span><span>
</span><span id="line-474"></span><span>  </span><span class="hs-comment">-- The is a dummy register used to indicate to the stack unwinder where</span><span>
</span><span id="line-475"></span><span>  </span><span class="hs-comment">-- a routine would return to.</span><span>
</span><span id="line-476"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="UnwindReturnReg"><span class="annot"><a href="GHC.Cmm.Expr.html#UnwindReturnReg"><span class="hs-identifier hs-var">UnwindReturnReg</span></a></span></span><span>
</span><span id="line-477"></span><span>
</span><span id="line-478"></span><span>  </span><span class="hs-comment">-- Base Register for PIC (position-independent code) calculations</span><span>
</span><span id="line-479"></span><span>  </span><span class="hs-comment">-- Only used inside the native code generator. It's exact meaning differs</span><span>
</span><span id="line-480"></span><span>  </span><span class="hs-comment">-- from platform to platform (see module PositionIndependentCode).</span><span>
</span><span id="line-481"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PicBaseReg"><span class="annot"><a href="GHC.Cmm.Expr.html#PicBaseReg"><span class="hs-identifier hs-var">PicBaseReg</span></a></span></span><span>
</span><span id="line-482"></span><span>
</span><span id="line-483"></span><span>  </span><span class="hs-keyword">deriving</span><span class="hs-special">(</span><span> </span><span id="local-6989586621680936565"><span id="local-6989586621680936567"><span id="local-6989586621680936586"><span class="annot"><span class="annottext">Int -&gt; GlobalReg -&gt; ShowS
[GlobalReg] -&gt; ShowS
GlobalReg -&gt; String
(Int -&gt; GlobalReg -&gt; ShowS)
-&gt; (GlobalReg -&gt; String)
-&gt; ([GlobalReg] -&gt; ShowS)
-&gt; Show GlobalReg
forall a.
(Int -&gt; a -&gt; ShowS) -&gt; (a -&gt; String) -&gt; ([a] -&gt; ShowS) -&gt; Show a
showList :: [GlobalReg] -&gt; ShowS
$cshowList :: [GlobalReg] -&gt; ShowS
show :: GlobalReg -&gt; String
$cshow :: GlobalReg -&gt; String
showsPrec :: Int -&gt; GlobalReg -&gt; ShowS
$cshowsPrec :: Int -&gt; GlobalReg -&gt; ShowS
</span><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Show</span></a></span></span></span></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-484"></span><span>
</span><span id="line-485"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680936562"><span class="annot"><span class="hs-identifier hs-type">Eq</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-486"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span id="local-6989586621680936554"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936554"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680936553"><span class="annot"><span class="annottext">== :: GlobalReg -&gt; GlobalReg -&gt; Bool
</span><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span id="local-6989586621680936552"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936552"><span class="hs-identifier hs-var">j</span></a></span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936554"><span class="hs-identifier hs-var">i</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936552"><span class="hs-identifier hs-var">j</span></a></span><span> </span><span class="hs-comment">-- Ignore type when seeking clashes</span><span>
</span><span id="line-487"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span> </span><span id="local-6989586621680936551"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936551"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span> </span><span id="local-6989586621680936550"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936550"><span class="hs-identifier hs-var">j</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936551"><span class="hs-identifier hs-var">i</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936550"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-488"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span id="local-6989586621680936549"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936549"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span id="local-6989586621680936548"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936548"><span class="hs-identifier hs-var">j</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936549"><span class="hs-identifier hs-var">i</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936548"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-489"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span> </span><span id="local-6989586621680936547"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936547"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span> </span><span id="local-6989586621680936546"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936546"><span class="hs-identifier hs-var">j</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936547"><span class="hs-identifier hs-var">i</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936546"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-490"></span><span>   </span><span class="hs-comment">-- NOTE: XMM, YMM, ZMM registers actually are the same registers</span><span>
</span><span id="line-491"></span><span>   </span><span class="hs-comment">-- at least with respect to store at YMM i and then read from XMM i</span><span>
</span><span id="line-492"></span><span>   </span><span class="hs-comment">-- and similarly for ZMM etc.</span><span>
</span><span id="line-493"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span id="local-6989586621680936545"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936545"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span id="local-6989586621680936544"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936544"><span class="hs-identifier hs-var">j</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936545"><span class="hs-identifier hs-var">i</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936544"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-494"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span id="local-6989586621680936543"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936543"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span id="local-6989586621680936542"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936542"><span class="hs-identifier hs-var">j</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936543"><span class="hs-identifier hs-var">i</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936542"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-495"></span><span>   </span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span id="local-6989586621680936541"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936541"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span id="local-6989586621680936540"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936540"><span class="hs-identifier hs-var">j</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936541"><span class="hs-identifier hs-var">i</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936540"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-496"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-497"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-498"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-499"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-500"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-501"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-502"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-503"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-504"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#EagerBlackholeInfo"><span class="hs-identifier hs-var">EagerBlackholeInfo</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#EagerBlackholeInfo"><span class="hs-identifier hs-var">EagerBlackholeInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-505"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCEnter1"><span class="hs-identifier hs-var">GCEnter1</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCEnter1"><span class="hs-identifier hs-var">GCEnter1</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-506"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCFun"><span class="hs-identifier hs-var">GCFun</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCFun"><span class="hs-identifier hs-var">GCFun</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-507"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-508"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-509"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#UnwindReturnReg"><span class="hs-identifier hs-var">UnwindReturnReg</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#UnwindReturnReg"><span class="hs-identifier hs-var">UnwindReturnReg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-510"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#PicBaseReg"><span class="hs-identifier hs-var">PicBaseReg</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#PicBaseReg"><span class="hs-identifier hs-var">PicBaseReg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-511"></span><span>   </span><span id="local-6989586621680936539"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621680936539"><span class="hs-identifier hs-var">_r1</span></a></span></span><span> </span><span class="annot"><span class="hs-operator hs-var">==</span></span><span> </span><span id="local-6989586621680936538"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621680936538"><span class="hs-identifier hs-var">_r2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-512"></span><span>
</span><span id="line-513"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680936523"><span id="local-6989586621680936525"><span id="local-6989586621680936527"><span id="local-6989586621680936529"><span id="local-6989586621680936531"><span id="local-6989586621680936533"><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span></span></span></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-514"></span><span>   </span><span id="local-6989586621680936515"><span class="annot"><span class="annottext">compare :: GlobalReg -&gt; GlobalReg -&gt; Ordering
</span><a href="#local-6989586621680936515"><span class="hs-identifier hs-var hs-var hs-var hs-var">compare</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span id="local-6989586621680936514"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936514"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span id="local-6989586621680936513"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936513"><span class="hs-identifier hs-var">j</span></a></span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Ordering
forall a. Ord a =&gt; a -&gt; a -&gt; Ordering
</span><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936514"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936513"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-515"></span><span>     </span><span class="hs-comment">-- Ignore type when seeking clashes</span><span>
</span><span id="line-516"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span> </span><span id="local-6989586621680936512"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936512"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span>  </span><span id="local-6989586621680936511"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936511"><span class="hs-identifier hs-var">j</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Ordering
forall a. Ord a =&gt; a -&gt; a -&gt; Ordering
</span><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936512"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936511"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-517"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span id="local-6989586621680936510"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936510"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span id="local-6989586621680936509"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936509"><span class="hs-identifier hs-var">j</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Ordering
forall a. Ord a =&gt; a -&gt; a -&gt; Ordering
</span><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936510"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936509"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-518"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span> </span><span id="local-6989586621680936508"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936508"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span>   </span><span id="local-6989586621680936507"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936507"><span class="hs-identifier hs-var">j</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Ordering
forall a. Ord a =&gt; a -&gt; a -&gt; Ordering
</span><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936508"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936507"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-519"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span id="local-6989586621680936506"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936506"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span>    </span><span id="local-6989586621680936505"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936505"><span class="hs-identifier hs-var">j</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Ordering
forall a. Ord a =&gt; a -&gt; a -&gt; Ordering
</span><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936506"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936505"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-520"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span id="local-6989586621680936504"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936504"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span>    </span><span id="local-6989586621680936503"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936503"><span class="hs-identifier hs-var">j</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Ordering
forall a. Ord a =&gt; a -&gt; a -&gt; Ordering
</span><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936504"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936503"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-521"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span id="local-6989586621680936502"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936502"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span>    </span><span id="local-6989586621680936501"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936501"><span class="hs-identifier hs-var">j</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Ordering
forall a. Ord a =&gt; a -&gt; a -&gt; Ordering
</span><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936502"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680936501"><span class="hs-identifier hs-var">j</span></a></span><span>
</span><span id="line-522"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-523"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-524"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-525"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-526"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-527"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-528"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-529"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-530"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#EagerBlackholeInfo"><span class="hs-identifier hs-var">EagerBlackholeInfo</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#EagerBlackholeInfo"><span class="hs-identifier hs-var">EagerBlackholeInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-531"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCEnter1"><span class="hs-identifier hs-var">GCEnter1</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCEnter1"><span class="hs-identifier hs-var">GCEnter1</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-532"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCFun"><span class="hs-identifier hs-var">GCFun</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCFun"><span class="hs-identifier hs-var">GCFun</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-533"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-534"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-535"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#UnwindReturnReg"><span class="hs-identifier hs-var">UnwindReturnReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#UnwindReturnReg"><span class="hs-identifier hs-var">UnwindReturnReg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-536"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#PicBaseReg"><span class="hs-identifier hs-var">PicBaseReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#PicBaseReg"><span class="hs-identifier hs-var">PicBaseReg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">EQ</span></span><span>
</span><span id="line-537"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-538"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-539"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-540"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-541"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-542"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-543"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-544"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-545"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-546"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-547"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-548"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-549"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-550"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-551"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-552"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-553"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-554"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-555"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-556"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-557"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-558"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-559"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-560"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-561"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-562"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-563"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-564"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-565"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-566"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-567"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCEnter1"><span class="hs-identifier hs-var">GCEnter1</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-568"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCEnter1"><span class="hs-identifier hs-var">GCEnter1</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-569"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCFun"><span class="hs-identifier hs-var">GCFun</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-570"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCFun"><span class="hs-identifier hs-var">GCFun</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-571"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-572"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-573"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-574"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-575"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#UnwindReturnReg"><span class="hs-identifier hs-var">UnwindReturnReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-576"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#UnwindReturnReg"><span class="hs-identifier hs-var">UnwindReturnReg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-577"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#EagerBlackholeInfo"><span class="hs-identifier hs-var">EagerBlackholeInfo</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">LT</span></span><span>
</span><span id="line-578"></span><span>   </span><span class="annot"><span class="hs-identifier hs-var">compare</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#EagerBlackholeInfo"><span class="hs-identifier hs-var">EagerBlackholeInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><span class="hs-identifier hs-var">GT</span></span><span>
</span><span id="line-579"></span><span>
</span><span id="line-580"></span><span class="hs-comment">-- convenient aliases</span><span>
</span><span id="line-581"></span><span class="annot"><a href="GHC.Cmm.Expr.html#baseReg"><span class="hs-identifier hs-type">baseReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#spReg"><span class="hs-identifier hs-type">spReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#hpReg"><span class="hs-identifier hs-type">hpReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#spLimReg"><span class="hs-identifier hs-type">spLimReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#hpLimReg"><span class="hs-identifier hs-type">hpLimReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#nodeReg"><span class="hs-identifier hs-type">nodeReg</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-582"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Expr.html#currentTSOReg"><span class="hs-identifier hs-type">currentTSOReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#currentNurseryReg"><span class="hs-identifier hs-type">currentNurseryReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#hpAllocReg"><span class="hs-identifier hs-type">hpAllocReg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#cccsReg"><span class="hs-identifier hs-type">cccsReg</span></a></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span>
</span><span id="line-583"></span><span id="baseReg"><span class="annot"><span class="annottext">baseReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#baseReg"><span class="hs-identifier hs-var hs-var">baseReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span>
</span><span id="line-584"></span><span id="spReg"><span class="annot"><span class="annottext">spReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#spReg"><span class="hs-identifier hs-var hs-var">spReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span>
</span><span id="line-585"></span><span id="hpReg"><span class="annot"><span class="annottext">hpReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#hpReg"><span class="hs-identifier hs-var hs-var">hpReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span>
</span><span id="line-586"></span><span id="hpLimReg"><span class="annot"><span class="annottext">hpLimReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#hpLimReg"><span class="hs-identifier hs-var hs-var">hpLimReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span>
</span><span id="line-587"></span><span id="spLimReg"><span class="annot"><span class="annottext">spLimReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#spLimReg"><span class="hs-identifier hs-var hs-var">spLimReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span>
</span><span id="line-588"></span><span id="nodeReg"><span class="annot"><span class="annottext">nodeReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#nodeReg"><span class="hs-identifier hs-var hs-var">nodeReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#node"><span class="hs-identifier hs-var">node</span></a></span><span>
</span><span id="line-589"></span><span id="currentTSOReg"><span class="annot"><span class="annottext">currentTSOReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#currentTSOReg"><span class="hs-identifier hs-var hs-var">currentTSOReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span>
</span><span id="line-590"></span><span id="currentNurseryReg"><span class="annot"><span class="annottext">currentNurseryReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#currentNurseryReg"><span class="hs-identifier hs-var hs-var">currentNurseryReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span>
</span><span id="line-591"></span><span id="hpAllocReg"><span class="annot"><span class="annottext">hpAllocReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#hpAllocReg"><span class="hs-identifier hs-var hs-var">hpAllocReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span><span>
</span><span id="line-592"></span><span id="cccsReg"><span class="annot"><span class="annottext">cccsReg :: CmmReg
</span><a href="GHC.Cmm.Expr.html#cccsReg"><span class="hs-identifier hs-var hs-var">cccsReg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span>
</span><span id="line-593"></span><span>
</span><span id="line-594"></span><span class="annot"><a href="GHC.Cmm.Expr.html#node"><span class="hs-identifier hs-type">node</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span>
</span><span id="line-595"></span><span id="node"><span class="annot"><span class="annottext">node :: GlobalReg
</span><a href="GHC.Cmm.Expr.html#node"><span class="hs-identifier hs-var hs-var">node</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; VGcPtr -&gt; GlobalReg
</span><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-var">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><a href="GHC.Cmm.Expr.html#VGcPtr"><span class="hs-identifier hs-var">VGcPtr</span></a></span><span>
</span><span id="line-596"></span><span>
</span><span id="line-597"></span><span class="annot"><a href="GHC.Cmm.Expr.html#globalRegType"><span class="hs-identifier hs-type">globalRegType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Type.html#CmmType"><span class="hs-identifier hs-type">CmmType</span></a></span><span>
</span><span id="line-598"></span><span id="globalRegType"><span class="annot"><span class="annottext">globalRegType :: Platform -&gt; GlobalReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#globalRegType"><span class="hs-identifier hs-var hs-var">globalRegType</span></a></span></span><span> </span><span id="local-6989586621680936500"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936500"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-599"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><a href="GHC.Cmm.Expr.html#VGcPtr"><span class="hs-identifier hs-var">VGcPtr</span></a></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#gcWord"><span class="hs-identifier hs-var">gcWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936500"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-600"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><a href="GHC.Cmm.Expr.html#VNonGcPtr"><span class="hs-identifier hs-var">VNonGcPtr</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936500"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-601"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>             </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmFloat"><span class="hs-identifier hs-var">cmmFloat</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span>
</span><span id="line-602"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmFloat"><span class="hs-identifier hs-var">cmmFloat</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span>
</span><span id="line-603"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmBits"><span class="hs-identifier hs-var">cmmBits</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W64"><span class="hs-identifier hs-var">W64</span></a></span><span>
</span><span id="line-604"></span><span>   </span><span class="hs-comment">-- TODO: improve the internal model of SIMD/vectorized registers</span><span>
</span><span id="line-605"></span><span>   </span><span class="hs-comment">-- the right design SHOULd improve handling of float and double code too.</span><span>
</span><span id="line-606"></span><span>   </span><span class="hs-comment">-- see remarks in &quot;NOTE [SIMD Design for the future]&quot;&quot; in GHC.StgToCmm.Prim</span><span>
</span><span id="line-607"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; CmmType -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmVec"><span class="hs-identifier hs-var">cmmVec</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmBits"><span class="hs-identifier hs-var">cmmBits</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-608"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; CmmType -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmVec"><span class="hs-identifier hs-var">cmmVec</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmBits"><span class="hs-identifier hs-var">cmmBits</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-609"></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; CmmType -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmVec"><span class="hs-identifier hs-var">cmmVec</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">16</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmBits"><span class="hs-identifier hs-var">cmmBits</span></a></span><span> </span><span class="annot"><span class="annottext">Width
</span><a href="GHC.Cmm.Type.html#W32"><span class="hs-identifier hs-var">W32</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-610"></span><span>
</span><span id="line-611"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#gcWord"><span class="hs-identifier hs-var">gcWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936500"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-comment">-- The initialiser for all</span><span>
</span><span id="line-612"></span><span>                                 </span><span class="hs-comment">-- dynamically allocated closures</span><span>
</span><span id="line-613"></span><span>   </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680936500"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-614"></span><span>
</span><span id="line-615"></span><span class="annot"><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier hs-type">isArgReg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-616"></span><span id="isArgReg"><span class="annot"><span class="annottext">isArgReg :: GlobalReg -&gt; Bool
</span><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier hs-var hs-var">isArgReg</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-617"></span><span class="annot"><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier hs-var">isArgReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-618"></span><span class="annot"><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier hs-var">isArgReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-619"></span><span class="annot"><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier hs-var">isArgReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-620"></span><span class="annot"><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier hs-var">isArgReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-621"></span><span class="annot"><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier hs-var">isArgReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-622"></span><span class="annot"><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier hs-var">isArgReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-623"></span><span class="annot"><a href="GHC.Cmm.Expr.html#isArgReg"><span class="hs-identifier hs-var">isArgReg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><span class="hs-identifier">_</span></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-624"></span></pre></body></html>